/**
 * 
 */
package com.precisosoft.mathematize.client.gin;

import com.google.web.bindery.event.shared.EventBus;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.inject.Provider;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.precisosoft.mathematize.client.LoggedInGatekeeper;
import com.precisosoft.mathematize.client.presenter.ErrorPagePresenter;
import com.precisosoft.mathematize.client.presenter.HomePagePresenter;
import com.precisosoft.mathematize.client.presenter.MainPagePresenter;
import com.precisosoft.mathematize.client.presenter.SignInPagePresenter;

/**
 * @author jewettdx
 *
 */
@GinModules({DispatchAsyncModule.class, ClientModule.class})
public interface MathematizeGinjector extends Ginjector  {

  EventBus getEventBus();
  PlaceManager getPlaceManager();
  //Resources getResources();
  //DispatchAsync getDispatcher();
  //ProxyFailureHandler getProxyFailureHandler();
  //CurrentUser getCurrentUser();
  // Translations getTranslations();

  LoggedInGatekeeper getLoggedInGatekeeper();
//  AdminGatekeeper    getAdminGatekeeper();

  // Sign In//
  Provider<SignInPagePresenter> getSignInPagePresenter();

  // Main Page(s)
  AsyncProvider<HomePagePresenter> getHomePagePresenter();
  
  // Main Page(s)
  AsyncProvider<MainPagePresenter> getMainPagePresenter();

//  Provider<AccountPagePresenter> getAccountPagePresenter();
//  Provider<FileUploadPagePresenter> getFileUploadPagePresenter();
//
  // Error Page
    AsyncProvider<ErrorPagePresenter> getErrorPagePresenter();
//
//  // Sales
//  AsyncProvider<ActivitiesPresenter> getActivitiesPresenter();
//  AsyncProvider<CalendarPresenter> getCalendarPresenter();
//  AsyncProvider<DashboardsPresenter> getDashboardsPresenter();
//  AsyncProvider<ImportsPresenter> getImportsPresenter();
//  AsyncProvider<AccountsPresenter> getAccountsPresenter();
//  AsyncProvider<ReportsPresenter> getReportsPresenter();
//
//  AsyncProvider<AccountInformationPresenter> getAccountInformationPresenter();

  // Settings
//  AsyncProvider<AdministrationPresenter> getAdministrationPresenter();
//
//  // Resource Centre
//  AsyncProvider<HighlightsPresenter> getHighlightsPresenter();
//
//  ProxyFailureHandler getProxyFailureHandler();
}
